Upd on 2023/4/24:整理博客的时候发现以前写错了,Dev 一个 IDE 哪里会有问题呢?其实是 TDM-GCC 的问题。
库是一个神奇的东西。C++ 的标准库众所周知地使用 std 作为名字空间。但是 C++ 还包含许多拓展库,比如 pb_ds 和 cxx。下图标蓝的就是可用的库的命名空间:
但是,要使用名字空间里面的类,必须声明头文件……然而这些头文件名字又和命名空间不一样……超级难记。幸好 C++ 为我们提供了两个强力的头文件:<bits/stdc++.h>
和 <bits/extc++.h>
。他们包括了算法竞赛所有可能用到的头文件!
本来事情到这里就结束了,但是 TDM-GCC 他要整活!当你用 TDM-GCC 编译时(这里使用的是 TDM-GCC 4.9.2),使用 #include<bits/extc++.h>
会报错。原因是 <bits/extc++.h>
中声明的 <ext/codecvt_specializations.h>
中声明的 <iconv.h>
不存在!怎么办?难道只能死记硬背子标头了吗?有两个方法可以化解这场危机。
非要用 TDM-GCC?没关系,也有办法。按照如下步骤走。
<bits/extc++.h>
。<ext/codecvt_specializations.h>
,我相信你也用不上。还有个办法,按照这个路径打开(首先打开 DevC++ 的文件夹):.\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++
。拓展库文件在 ext 文件夹内。